package com.dc.ftp.broadcast;

import android.bluetooth.BluetoothManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
import android.widget.Toast;

import com.dc.ftp.utils.MyLog;


/**
 * 网络状态广播
 * 广播接收器BroadcastReceiver 是一个全局的监听器,监听 / 接收 应用 系统/app发出的广播消息
 * 继承BroadcastReceivre基类
  必须复写抽象方法onReceive()方法。
  当系统网络或者什么发送变化,广播接收器会自动回调onReceive()方法。广播接收器运行在ui线程，在onReceive方法
  中和其他组件交互，不能执行耗时操作，否则会导致ANR卡死机
 通常我们获取系统服务时 ：context.getSystemService()在Android6.0系统上，如果这里的Context如果是Activity的实例，那么即使你什么也不干也会造成内存泄漏
 获取系统服务getSystemService时使用ApplicationContext.  context.applicationcontext().getsys....

 * @author zhaoshuai
 */
public class NetWorkStatusBroadcastReceiver extends BroadcastReceiver {

	private static final String TAG = "NetWorkStatusBroadcastReceiver";

	public static boolean netWorkAviable = true;

	public static boolean wifi = false;

	@Override
	public void onReceive(Context context, Intent intent) {
		MyLog.e(TAG, "网络状态改变change");

		// 获得网络连接服务
		ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo networkInfo = connManager.getActiveNetworkInfo(); //获取当前连接可用的网络
		if (null != networkInfo) {
			if (networkInfo.isAvailable()) { //判断当前网络是否可用
				// 获取特定网络类型的链接状态信息(TYPE_WIFI) 的状态
				State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); // 获取网络连接状态
				if (State.CONNECTED == state) { // 判断是否正在使用WIFI网络 (网络状态描述state:已连接)
					netWorkAviable = true;
					wifi = true;
					// Toast.makeText(context, "Wifi",
					// Toast.LENGTH_SHORT).show();
				}
                //获取移动数据链接的信息状态
				state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState(); // 获取网络连接状态
				if (State.CONNECTED == state) { // 判断是否正在使用GPRS网络
					netWorkAviable = true;
					wifi = false;
					// Toast.makeText(context, "GPRS",
					// Toast.LENGTH_SHORT).show();
				}

			} else {
				//否则网络连接失败
				netWorkAviable = false;
				Toast.makeText(context, "网络喝醉了", Toast.LENGTH_LONG).show();
			}
		} else {
			netWorkAviable = false;
			Toast.makeText(context, "网络不见了,快去找找吧", Toast.LENGTH_LONG).show();
		}

	}
}
